﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using Sistema.Modelo.Financeiro;
namespace Sistema.Dao.Financeiro
{
    class daoBandeira
    {
        Mensagens men = new Mensagens();
        SqlDataAdapter dr;
        String Mensagem;
        ///
        ///
        ///
        ///
        public String getMensagem()//metodo de retorno de resultado de pesquisa
        {
            return Mensagem;
        }
        ///
        ///
        ///
        ///
        public SqlDataAdapter getSelect()//metodo de retorno de resultado de pesquisa
        {
            return dr;
        }
        ///
        ///
        ///
        ///
        public void SelecionarBandeira(String Busca, int selecao)
        {
            try
            {
                String[] stringconecao = new String[5];//string em array para armazenar mais de um tipo de selecao
                stringconecao[0] = "SELECT * FROM Bandeira ORDER BY Bandeira_Descricao;";
                stringconecao[1] = "SELECT * FROM Bandeira WHERE Bandeira_Codigo like '%" + Busca + "%' ORDER BY Bandeira_Descricao;";
                stringconecao[2] = "SELECT * FROM Bandeira WHERE Bandeira_Descricao like '%" + Busca + "%' ORDER BY Bandeira_Descricao;";
                stringconecao[3] = "SELECT * FROM Bandeira WHERE Porcentagem_Credito like '%" + Busca + "%' ORDER BY Bandeira_Descricao;";
                stringconecao[4] = "SELECT * FROM Bandeira WHERE Porcentagem_Debito like '%" + Busca + "%' ORDER BY Bandeira_Descricao;";

                StringConecao con = new StringConecao();
                string sqlcon = con.getconecao();
                SqlConnection sqlconn = new SqlConnection(sqlcon);
                sqlconn.Open();
                string mSQL = stringconecao[selecao];
                SqlCommand crm = new SqlCommand(mSQL, sqlconn);
                this.dr = new SqlDataAdapter(crm);
                sqlconn.Close();
            }
            catch (Exception ex)
            {
                Mensagem = "Erro na execução com o banco de dados" + "\n" + Convert.ToString(ex);
            }
        }
        ///
        ///
        ///
        ///
        public void ExecutarProcedimentoBandeira(modBandeira a, int Procedimento)
        {
            try
            {
                int Bandeira_Codigo = Convert.ToInt16(null);
                String Bandeira_Descricao = null;
                Double Porcentagem_Credito = Convert.ToDouble(null);
                Double Porcentagem_Debito = Convert.ToDouble(null);

                if (Procedimento == 1)
                {//Cadastrar

                    Bandeira_Descricao = a.Bandeira_Descricao;
                    Porcentagem_Credito = a.Porcentagem_Credito;
                    Porcentagem_Debito = a.Porcentagem_Debito;
                }
                ////////////////////
                else if (Procedimento == 2)
                {//Alterar
                    Bandeira_Codigo = a.Bandeira_Codigo;
                    Bandeira_Descricao = a.Bandeira_Descricao;
                    Porcentagem_Credito = a.Porcentagem_Credito;
                    Porcentagem_Debito = a.Porcentagem_Debito;
                }
                ////////////////////
                else if (Procedimento == 3)
                {//Excluir
                    Bandeira_Codigo = a.Bandeira_Codigo;
                    Bandeira_Descricao = a.Bandeira_Descricao;
                    Porcentagem_Credito = a.Porcentagem_Credito;
                    Porcentagem_Debito = a.Porcentagem_Debito;
                }
                ////////////////////

                StringConecao con = new StringConecao();
                string sqlcon = con.getconecao();
                SqlConnection sqlconn = new SqlConnection(sqlcon);
                sqlconn.Open();
                string mSQL;//variavel passa o nome da procidore
                mSQL = "SP_Update_Bandeira";
                SqlCommand crm = new SqlCommand(mSQL, sqlconn);

                crm.CommandType = CommandType.StoredProcedure;
                crm.Parameters.Add("@Bandeira_Codigo", SqlDbType.VarChar).Value = Bandeira_Codigo;
                crm.Parameters.Add("@Bandeira_Descricao", SqlDbType.VarChar).Value = Bandeira_Descricao;
                crm.Parameters.Add("@Porcentagem_Credito", SqlDbType.VarChar).Value = Porcentagem_Credito;
                crm.Parameters.Add("@Porcentagem_Debito", SqlDbType.VarChar).Value = Porcentagem_Debito;
                crm.Parameters.Add("@Data_Cadastro", SqlDbType.VarChar).Value = "";
                crm.Parameters.Add("@Operacao", SqlDbType.VarChar).Value = Procedimento;
                crm.Parameters.Add("@Novocodigo", SqlDbType.VarChar).Value = "";
                crm.Parameters.Add("@Retorno", SqlDbType.VarChar).Value = "";

                var returnParameter = crm.Parameters.Add("@Retorno", SqlDbType.Int);//comando para selecionar o retorno da procedimento
                returnParameter.Direction = ParameterDirection.ReturnValue;//retorno do procedimento

                crm.ExecuteNonQuery();
                Mensagem = men.getGerarMensagem(returnParameter.Scale.ToString());//recebendo a variavel
                sqlconn.Close();
            }
            catch (Exception ex)
            {
                Mensagem = "Erro na execução com o banco de dados" + "\n" + Convert.ToString(ex);
            }

        }
        ///
        ///
        ///
        ///
    }
}
